/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：UICompositeRadioLengendComponent.js<br>
 * 日期：2016年9月20日<br>
 * 作者: 杨顺强<br>
 * 功能： 用于radioLengend组件内部的组件。为专用组件<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/
window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent<br>
 * 函数功能：有三个组件组成的新组件，Text组件。textBox组件或者comboBox组件（二选一）。button组件（可选）<br>
 * 参数输入：<br>
 * 异常信息：<br>
 */
Rainier.UI.V2.UICompositeRadioLengendComponent = Rainier.UI.V2.UIComposite.extend({
	
	NAME : "Rainier.UI.V2.UICompositeRadioLengendComponent",
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.init<br>
	 * 函数功能：有三个组件组成的新组件，Text组件。textBox组件或者dataList组件（二选一）。button组件（可选）<br>
	 * 参数输入：objParentComposite : UIComposite 父组件对象<br>
	 * 参数输入：objProperties:  格式按照如下方式填写
	 * {
	 * 	  optionName  : "",		//标识当前参数		必写
	 *    text			:
	 *    {						//（必选）
	 *   		style:"",		//在text的样式，控制style的位置					
	 *   		text :"",		//该text的内容。
	 *    },
	 * 	  textbox	  : {},		//组件,可以是对应的textbox，也可以是对应的combobox组件（二选一）
	 * 	  button	  : {}		//按钮组件，控制当前组件中textbox或者combobox中的数据是否显示（可选）
	 * }<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	init : function(objParentComposite,objProperties){
		if(objProperties.optionName){
			this.optionName = objProperties.optionName;
		}else{
			throw new Error("该组件的optionName为必设项,请修改对象参数信息");
		}
		if(objProperties.text){
			this.textPro = objProperties.text;
		}
		else{
			throw new Error("text未赋值，请重新填写参数");
		}
		for(var option in objProperties){
			if(option === "textbox"){
				this.textboxProperties = objProperties[option];
			}
			if(option === "combobox"){
				this.comboboxProperties = objProperties[option];
			}
		}
		if(objProperties.button){
			this.buttonProperties = objProperties.button;
		}
		this.textBox = null;
		this.comboBox = null;
		this.button = null;
		this._super(objParentComposite,objProperties);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.createComposite<br>
	 * 函数功能：组件创建函数，完成对组件的创建工作<br>
	 * 参数输入：eleParent ： 父节点Tag<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	createComposite : function(eleParent){
		this._super(eleParent);
		var newEle = this.CreateElement("div",this.m_objProperties.id,null,{style:"margin-left:10px;margin-top:2px;float:left"});
		eleParent.append(newEle);
		var _this = this;
		//添加组件内容
		this.text	 = new Rainier.UI.V2.UICompositeText(this,this.textPro);
		if(this.textboxProperties){
			this.textBox = new Rainier.UI.V2.UICompositeTextBox(this,this.textboxProperties);
		}
		if(this.comboboxProperties){
			this.comboBox = new Rainier.UI.V2.UICompositeComboBox(this,this.comboboxProperties);
		}
		if(this.buttonProperties){
			this.button = new Rainier.UI.V2.UICompositeLinkButton(this,this.buttonProperties);
		}
		if(this.textbox && this.button){			
			this.button.getElement().before($("<span>&nbsp;&nbsp;<span>"));
		}
		//todos 完成button监听事件功能
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：获取当前组件的key值<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	getOptionName : function(){
		return this.optionName;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.getTextBox<br>
	 * 函数功能：获取textBox对象<br>
	 * 参数输入：无<br>
	 * 参数输出：<br>
	 * 函数返回：组件textBox<br>
	 * 异常信息：无<br>
	 */
	getTextBox : function(){
		if(this.textBox){
			return this.textBox;
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.getOptionName<br>
	 * 函数功能：获取comboBox组件<br>
	 * 参数输入：无<br>
	 * 参数输出：<br>
	 * 函数返回：组件comboBox<br>
	 * 异常信息：无<br>
	 */
	getComboBox : function(){
		if(this.comboBox){		
			return this.comboBox;
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.getValidateboxValue<br>
	 * 函数功能：获取textbox的值<br>
	 * 参数输入：无<br>
	 * 函数返回：textbox中的数值<br>
	 * 异常信息：无<br>
	 */
	getTextBoxValue :function(){
		if(this.textBox){
			return this.textBox.getValue();			
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.getComboBoxValue<br>
	 * 函数功能：获取combobox的值<br>
	 * 参数输入：无<br>
	 * 函数返回：combobox中的数值<br>
	 * 异常信息：无<br>
	 */
	getComboBoxValue :function(){
		if(this.comboBox){
			return this.comboBox.getValue();			
		}
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：获取当前组件中的子组件，即当前组件中的编辑框组件textBox 或者comboBox组件。<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	getChildBox : function(){
		if(this.textBox){
			return this.textBox;
		}
		if(this.comboBox){
			return this.comboBox;
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.getComponentValueObj<br>
	 * 函数功能：获取div容器中的textbox的值,形成参数对象<br>
	 * 参数输入：无<br>
	 * 函数返回：div容器中的参数对象<br>
	 * 异常信息：无<br>
	 */
	getComponentValueObj : function(){
		var obj = {};
		optionName = this.optionName;
		obj[optionName] = null;
		var value = null;
		if(this.textBox){
			value = this.getTextBoxValue();
		}
		if(this.comboBox){
			value = this.getComboBoxValue();
		}
		obj[optionName] = value;
		return obj;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeRadioLengendComponent.setComponentValue<br>
	 * 函数功能：为组件赋值，当需要设置组件的值时，完成对组件值得设置<br>
	 * 参数输入：sValue ：String 组件的值<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	setComponentValue : function(sValue){
		if(this.textBox){
			this.textBox.setValue(sValue);
		}
		if(this.comboBox){
			this.comboBox.setValue(sValue);
		}
	}
});
